home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-06-14 | 6.9 KB | 315 lines | [TEXT/ALFA] |
- set localVars { optionIsMeta wordBreak wordBreakPreface wordWrap
- fillColumn leftFillColumn tabSize elecLBrace elecRBrace electricSemi
- prefixString suffixString funcExpr funcPar sortedIsDefault
- markSorting }
-
-
-
-
- set allModeMenus { thinkMenu cwarrierMenu toolserverMenu
- texMenu thinkRefMenu oztexMenu
- texturesMenu tclMenu perlMenu }
-
-
- set modeMenus(C) { thinkMenu cwarrierMenu thinkRefMenu }
- set modeMenus(C++) { thinkMenu cwarrierMenu thinkRefMenu }
- set modeMenus(TeX) { texMenu texturesMenu }
- set modeMenus(Text) { perlMenu }
- set modeMenus(Fort) { }
- set modeMenus(Tcl) { tclMenu }
- set modeMenus(MPW) { }
- set modeMenus(Csh) { tclMenu }
- set modeMenus(BRWZ) { }
-
-
- # 'modes' is inspected by alpha for the popup mode menu. 'newMode' is
- # called by Alpha in case of a successful choice.
- set modes { C C++ Csh Fort MPW Tcl TeX Text }
-
- set modeProcs(C) setCMode
- set modeProcs(C++) setC++Mode
- set modeProcs(Csh) setShellMode
- set modeProcs(Fort) setFortranMode
- set modeProcs(MPW) setMPWMode
- set modeProcs(Tcl) setTclMode
- set modeProcs(TeX) setTexMode
- set modeProcs(Text) setTextMode
-
-
- set lastMode 0
-
-
-
- #================================================================================
-
-
- proc setWinMode name {
- global winModes
- set nm [file tail $name]
- if {[set first [string last " <" $name]] >= 0} {
- set rname [string range $name 0 [expr $first - 1]]
- } else {
- set rname $name
- }
- case $rname in {
- "*.c" { set winModes($name) setCMode }
- "*.tex" { set winModes($name) setTexMode; winFuncTitle $nm "Sect" }
- "*.cc" { set winModes($name) setC++Mode; winFuncTitle $nm "Meth" }
- "*.cp" { set winModes($name) setC++Mode; winFuncTitle $nm "Meth" }
- "*.C" { set winModes($name) setC++Mode; winFuncTitle $nm "Meth" }
- "*.h" { set winModes($name) setCMode }
- "*.f" { set winModes($name) setFortranMode }
- "*.tcl" { set winModes($name) setTclMode; winFuncTitle $nm "Proc" }
- {*Toolserver\ sh*} { set winModes($name) setMPWMode; winFuncTitle $nm "Proc" }
- {*tcl\ sh*} { set winModes($name) setShellMode; winFuncTitle $nm "Proc" }
- "*.sty" { set winModes($name) setTexMode; winFuncTitle $nm "Sect" }
- "Browser" { set winModes($name) setBrowseMode }
- default { set winModes($name) setTextMode }
- }
- }
-
-
-
- proc newMode mode {
- global winModes
- global modeProcs
-
- set name [lindex [winNames -f] 0]
- $modeProcs($mode)
- set winModes($name) $modeProcs($mode)
- }
-
-
- proc deactivateHook name {
- }
-
- proc suspendHook name {
- global iconifyOnSwitch
- global suspIconed
- if {$iconifyOnSwitch} {
- set wins [winNames -f]
- foreach win $wins {
- if {![icon -f "$win" -q]} {
- set suspIconed($win) 1
- icon -f "$win" -t
- }
- }
- }
- }
-
- proc resumeHook name {
- global iconifyOnSwitch resumeRevert suspIconed
- if {$iconifyOnSwitch && [info exists suspIconed]} {
- set wins [winNames -f]
- foreach win [array names suspIconed] {
- icon -f "$win" -o
- }
- unset suspIconed
- }
- if {$resumeRevert} {
- set resumeRevert 0
- revert
- }
- }
-
- # Called prior to Alpha calling 'MenuSelect'. Redefined in 'flags.tcl'.
- proc menuHook {} {
-
- }
-
-
- # Handles dynamically adding and deleting window names from menu.
- proc addWinName name {
- global winNameToNum winMenu winNumToName fullNames
-
- for {set i 0} {$i<100} {incr i} {
- if {[catch {set nm $winNumToName($i)} res] == "1"} {
- if {$fullNames != "0"} {
- set nm $name
- } else {
- regexp {[^:]*$} $name nm
- }
- if {$i < 10} {
- addMenuItem -m -l "/$i" $winMenu $nm
- } else {
- addMenuItem -m -l "" $winMenu $nm
- }
- set winNumToName($i) $name
- set winNameToNum($name) $i
- return
- }
- }
- }
-
- proc removeWinName name {
- global winNameToNum winNumToName fullNames winMenu
-
- set num $winNameToNum($name)
- unset winNumToName($num)
- unset winNameToNum($name)
- if {$fullNames == "1"} {
- deleteMenuItem -m $winMenu $name
- } else {
- regexp {[^:]*$} $name nm
- deleteMenuItem -m $winMenu $nm
- }
- }
-
-
- proc menuWin {menu name} {
- global winNameToNum
-
- set nms [array names winNameToNum]
- foreach nm $nms {
- if {[string match *$name $nm] == "1"} {
- bringToFront $name
- if [icon -q] { icon -f $name -o }
- return
- }
- }
- return "normal"
- }
-
-
-
- proc changeMode {newMode} {
- global lastMode savedIsMeta wordBreak wordBreakPreface optionIsMeta modeMenus
-
- catch {displayMode $newMode}
- if {$lastMode == $newMode} return
-
- if { $lastMode == "TeX" } {
- set optionIsMeta $savedIsMeta
- set wordBreakPreface {[^a-zA-Z0-9_]}
- set wordBreak {[a-zA-Z0-9_]+}
- set optionIsMeta 1
- }
-
- if {[info exists modeMenus($lastMode)]} {
- foreach m $modeMenus($lastMode) {
- global $m
- catch {removeMenu [set $m]}
- }
- }
-
- global mode
- set mode $newMode
- set lastMode $newMode
-
- if {[info exists modeMenus($lastMode)]} {
- foreach m $modeMenus($lastMode) {
- global $m
- catch {insertMenu [set $m]}
- }
- }
- }
-
-
- proc setModeMenus {} {
- global mode modeMenus allModeMenus
-
- set menus [listpick -p "Select (using shift) menus for mode '$mode':" -l [lsort $allModeMenus]]
- if {![llength $menus]} return
- set modeMenus($mode) $menus
- addUserLine "set modeMenus($mode) \{ $menus \}"
-
- foreach m $allModeMenus {
- global $m
- catch {removeMenu [set $m]}
- }
- foreach m $menus {
- global $m
- catch {insertMenu [set $m]}
- }
- }
-
-
- # Modes
-
- # Fortran programming mode
- proc setFortranMode {} {
- changeMode "Fort"
- uplevel #0 {
- set elecLBrace 0
- set elecRBrace 0
- set electricSemi 0
- set wordWrap 0
- set funcExpr {^( |\t)(subroutine|.*function|SUBROUTINE|.*FUNCTION).*\(.*$}
- set sortedIsDefault 0
- }
- }
-
-
- # Ordinary, default mode
- proc setTextMode {} {
- changeMode "Text"
- uplevel #0 {
- set elecLBrace 0
- set elecRBrace 0
- set electricSemi 0
- set wordWrap 1
- set prefixString "> "
- set suffixString " <--"
- }
- }
-
- #=============================================================================
- # Hook procs recognized: "openHook", "closeHook", "activateHook", "deactivateHook",
- # "suspendHook", "saveasHook", "saveHook", and "resumeHook".
- #=============================================================================
-
- # Event hooks - set specific modes when files opened.
- proc openHook name {
- global winModes
- $winModes($name)
- if {$name == {*Toolserver shell*}} startMPW
- addWinName $name
- }
-
- # full pathname
- proc saveHook name {
- global backup backExtension backDir
- if {![string length [set dir $backDir]]} {
- set dir [file dirname $name]
- }
- if ($backup) {
- catch {rm $dir:[file tail $name]~}
- cp $name $dir:[file tail $name]$backExtension
- }
- }
-
- # Clean up the mark stack.
- proc closeHook name {
- global markStack
- global winModes
- unset winModes($name)
- if [llength $markStack] {
- set markStack [removePat $markStack $name*]
- }
- removeWinName $name
- }
-
- proc saveasHook {oldName newName} {
- global winModes
- removeWinName $oldName
- addWinName $newName
- setWinMode $newName
- $winModes($newName)
- }
-
-
- proc activateHook name {
- global winModes
- if {[catch {$winModes($name)}]} {
- setWinMode $name
- $winModes($name)
- }
- }
-
- proc dirtyHook {name dirty} {
- global winMenu
- markMenuItem $winMenu [file tail $name] $dirty "◊"
- }
-
-
-